package com.shop.operator.service.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.shop.domain.PageResult;
import com.shop.mapper.BrandMapper;
import com.shop.mapper.SpecificationMapper;
import com.shop.mapper.TypeTemplateMapper;
import com.shop.model.TypeTemplate;
import com.shop.model.TypeTemplateExample;
import com.shop.model.TypeTemplateExample.Criteria;
import com.shop.operator.service.TypeTemplateService;


@Service("TypeTemplateService")
public class TemplateServiceBean implements TypeTemplateService {

	@Resource
	private TypeTemplateMapper typeTemplateMapper;
	
	@Resource
	private BrandMapper brandMapper;
	
	@Resource
	private SpecificationMapper specificationMapper;
	
	@Override
	public PageResult findAll(Integer page,Integer size) throws Exception {
		
		//使用pageHelp 分页
		PageHelper.startPage(page, size);
		
		Page<TypeTemplate> pages=(Page<TypeTemplate>) typeTemplateMapper.selectByExample(null);
		
		//返回分页结果对象
		return new PageResult(pages.getTotal(), pages.getResult());
	}

	/**
	 * 删除模板
	 */
	@Override
	public boolean delete(Long[] ids) throws Exception {
		//多次删除  只要有一次不成功  则报告删除不成功
		boolean flag=false;
		for(Long id:ids){
		int count=typeTemplateMapper.deleteByPrimaryKey(id);
		flag=count>0?true:false;
		}
		return flag;
	}

	
	
	/**
	 * 
	 * 查找select2的 品牌数据 没有写在brandService里面
	 */
	
	@Override
	public List<Map> selectOptionList() throws Exception {
		
		//拿到=[{id:..,text:...},{}]=类型的数据
		List<Map> lists=brandMapper.selectOptionList();
		return lists;
	}

	
	/**
	 * 查找select2 规格数据  没有写在brandService里面
	 */
	@Override
	public List<Map> selectOptionListWithSpec() throws Exception {
		// TODO Auto-generated method stub
		List<Map> lists=specificationMapper.findSpecList();
		return lists;
	}

	/**
	 * 添加模板
	 */
	@Override
	public boolean add(TypeTemplate template) throws Exception {
		
		int count=typeTemplateMapper.insert(template);
	
		return count>0;
	}

	/**
	 * 查找一个模板
	 */
	@Override
	public TypeTemplate findOne(Integer id) throws Exception {
		
		
		return typeTemplateMapper.selectByPrimaryKey(Long.valueOf(String.valueOf(id)));
	}

	
	/**
	 * 更新一个模板
	 */
	@Override
	public boolean update(TypeTemplate typeTemplate) throws Exception {
		
		int count=typeTemplateMapper.updateByPrimaryKeySelective(typeTemplate);
		return count>0;
	}

	@Override
	public PageResult findByLike(TypeTemplate typeTemplate, Integer page, Integer size) throws Exception {
		//拿到分页对象
		PageHelper.startPage(page, size);
		//拿到example
		TypeTemplateExample typeTemplateExample=new TypeTemplateExample();
		//拿到正则
		Criteria criteria=typeTemplateExample.createCriteria();
		
		if(typeTemplate!=null){
			
			if(typeTemplate.getName()!=null&&typeTemplate.getName().length()>0){
				//正则拼接
				criteria.andNameLike("%"+typeTemplate.getName()+"%");
			}
		}
		
		//拿到分页对象
		Page<TypeTemplate> pages=(Page<TypeTemplate>) typeTemplateMapper.selectByExample(typeTemplateExample);
		
		return new PageResult(pages.getTotal(), pages.getResult());
	}
	
	
	

}
